//引入express包
const express = require('express')
const cors = require('cors')
const bodyParser = require('body-parser')
const jwtParser = require('express-jwt')
const config = require('./config/index')
const path = require('path')



//引入个人信息模块
const userRouter = require('./router/user')

//引入用户中心模块
const userinfoRouter = require('./router/userinfo')

//引入文章类别路由模块
const cateRouter = require('./router/cate')

//引入文章发布路由模块
const articleRouter = require('./router/article')

//实例服务器
const app = express()

//静态托管页面
app.use('/uploads', express.static(path.join(__dirname, './uploads')))

//注册全局的跨域中间件
app.use(cors())

//注册全局解析的中间件
app.use(bodyParser.urlencoded({ extended: false }))

//注册返回错误信息的封装函数全局中间件
app.use((req, res, next) => {
    res.cc = (err, status = 1, ) => { //status默认值为1
        res.send({
            status,
            message: err instanceof Error ? err.message : err

            // message: err.message || err
        })
    }
    next()
})

//注册token解密全局中间件
app.use(jwtParser({ secret: config.secretKey, algorithms: ['HS256'] }).unless({ path: [/^\/api/] }))

//创建用户路由
app.use('/api', userRouter)

//创建个人中心路由
app.use('/my', userinfoRouter)

//创建文章类别路由
app.use('/my', cateRouter)

//创建文章发布路由
app.use('/my', articleRouter)

// //测试token值
// app.get('/my', (req, res) => {
//     res.send('ok')
// })

//注册全局错误中间件
app.use((err, req, res, next) => {
    console.log(err);
    if (err.name === 'UnanuthorizedError') {
        return res.send({
            status: 1,
            message: '身份认证失败！'
        })
    }
    if (err) return res.cc(err)

    next()
})

//监听端口
app.listen(3006, () => {
    console.log('api server running at http://localhost:3006');
})